﻿Imports Negocio
Imports Utilitario
Imports Entidad
Public Class frmImpresionBarras

    Dim codArticulo As String = ""
    Dim servicio1 As New BarraNegocio
    Dim servicio2 As New ArticuloNegocio
    Dim util As New Utiles

    Dim codBarra As String = ""
    Dim apcCodigo As String = ""
    Dim codProveedor As String = ""

    Sub New()

        ' Llamada necesaria para el diseñador.
        InitializeComponent()

        ' Agregue cualquier inicialización después de la llamada a InitializeComponent().

    End Sub

    Sub New(codArticulo As String)

        ' Llamada necesaria para el diseñador.
        InitializeComponent()

        ' Agregue cualquier inicialización después de la llamada a InitializeComponent().
        Me.codArticulo = codArticulo
    End Sub

    Sub mostrarArticulo(codArticulo As String)
        If codArticulo = "" Then
            util.mensaje("Ingrese código del articulo")
            Exit Sub
        End If

        Dim articulo As Articulo = servicio2.obtenerArticulo(codArticulo)

        If articulo Is Nothing Then
            util.mensaje("Ocurrió un error de conexión. Intentelo nuevamente.")
            txtArticulo.Text = ""
            txtArticulo.Focus()
            Exit Sub
        End If

        If articulo.ART_Codigo = "-1" Then
            util.mensaje("Artículo no existe.")
            txtArticulo.Text = ""
            txtArticulo.Focus()
            Exit Sub
        End If

        lblDescripcion.Text = articulo.ART_Descripcion
        lblUnidad.Text = articulo.UNM_Descripcion

        Dim ds As DataSet = servicio1.obtenerCodigosBarra(codArticulo)

        If ds Is Nothing Then
            util.mensaje("Ocurrió un error al obtener los códigos de barra. Intentelo nuevamente.")
            Exit Sub
        End If

        If ds.Tables(0).Rows.Count > 0 Then
            dgvBarras.Rows.Clear()

            For i = 0 To ds.Tables(0).Rows.Count - 1
                dgvBarras.Rows.Add(ds.Tables(0).Rows(i)("CodBarra").ToString.Trim, ds.Tables(0).Rows(i)("UndMedidaNivel").ToString.Trim,
                                   ds.Tables(0).Rows(i)("Cantidad").ToString.Trim, ds.Tables(0).Rows(i)("Nivel").ToString.Trim,
                                   ds.Tables(0).Rows(i)("Espacio").ToString.Trim, ds.Tables(0).Rows(i)("Tamanio").ToString.Trim,
                                   ds.Tables(0).Rows(i)("Lugar").ToString.Trim, ds.Tables(0).Rows(i)("UNM_Codigo").ToString.Trim,
                                   ds.Tables(0).Rows(i)("APC_Codigo").ToString.Trim, ds.Tables(0).Rows(i)("PROV_Codigo").ToString.Trim)
            Next

            dgvBarras.Rows(0).Selected = False
        Else
            If MsgBox("No existe ningún registro de código de barra ¿Desea agregar uno?", MsgBoxStyle.Question + MsgBoxStyle.YesNo + MsgBoxStyle.DefaultButton2, "Mensajes al Usuario") = MsgBoxResult.Yes Then
                Dim frmAgregar As New frmAgregarCodBarra(txtArticulo.Text.Trim, "", "Seleccionar...", 0, "0", "", "", "", "")
                If frmAgregar.ShowDialog = Windows.Forms.DialogResult.OK Then
                    mostrarArticulo(txtArticulo.Text.Trim)
                End If
            End If
        End If
    End Sub

    Private Sub txtArticulo_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles txtArticulo.KeyDown
        If e.KeyValue = Keys.Enter Then
            mostrarArticulo(txtArticulo.Text.Trim)
        End If
    End Sub

    Private Sub btnBuscar_Click(sender As System.Object, e As System.EventArgs) Handles btnBuscar.Click
        mostrarArticulo(txtArticulo.Text.Trim)
    End Sub

    Private Sub btnLimpiar_Click(sender As System.Object, e As System.EventArgs) Handles btnLimpiar.Click
        txtCantidad.Text = 0
        lblDescripcion.Text = ""
        lblUnidad.Text = ""
        dgvBarras.Rows.Clear()
        txtArticulo.Text = ""
        txtArticulo.Focus()
    End Sub

    Private Sub btnCancelar_Click(sender As System.Object, e As System.EventArgs) Handles btnCancelar.Click
        Me.Close()
    End Sub

    Private Sub dgvBarras_CellClick(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvBarras.CellClick
        Dim f As Integer = e.RowIndex

        If f > -1 Then
            codBarra = dgvBarras.Item("Column1", f).Value
            apcCodigo = dgvBarras.Item("Column9", f).Value
            codProveedor = dgvBarras.Item("Column10", f).Value
        End If
    End Sub

    Private Sub btnImprimir_Click(sender As System.Object, e As System.EventArgs) Handles btnImprimir.Click
        If MsgBox("¿Está seguro de imprimir " & CInt(txtCantidad.Text.Trim) & " copias del código: " & codBarra & "?", MsgBoxStyle.Question + MsgBoxStyle.YesNo + MsgBoxStyle.DefaultButton2, "Mensajes al Usuario") = MsgBoxResult.Yes Then
            Dim reporte As New rptBarra
            reporte.SetParameterValue("@CODBARRA", "*" & codBarra & "*")
            reporte.PrintToPrinter(CInt(txtCantidad.Text.Trim), False, 0, 0)
        End If
    End Sub

    Private Sub btnAgregar_Click(sender As System.Object, e As System.EventArgs) Handles btnAgregar.Click
        Dim frmAgregar As New frmAgregarCodBarra(txtArticulo.Text.Trim, "", "Seleccionar...", "0", "0", "", "", "", "")
        If frmAgregar.ShowDialog = Windows.Forms.DialogResult.OK Then
            mostrarArticulo(txtArticulo.Text.Trim)
        End If
    End Sub

    Private Sub dgvBarras_CellDoubleClick(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvBarras.CellDoubleClick
        Dim f As Integer = e.RowIndex

        If f > -1 Then
            codBarra = dgvBarras.Item("Column1", f).Value
            Dim cantidad As String = dgvBarras.Item("Column3", f).Value
            Dim nivel As String = dgvBarras.Item("Column4", f).Value
            Dim espacio As String = dgvBarras.Item("Column5", f).Value
            Dim tamanio As String = dgvBarras.Item("Column6", f).Value
            Dim observacion As String = dgvBarras.Item("Column7", f).Value
            Dim codUnidad As String = dgvBarras.Item("Column8", f).Value
            apcCodigo = dgvBarras.Item("Column9", f).Value

            Dim frmAgregar As New frmAgregarCodBarra(txtArticulo.Text.Trim, codBarra, nivel, codUnidad, cantidad, espacio, tamanio, observacion, apcCodigo)
            If frmAgregar.ShowDialog = Windows.Forms.DialogResult.OK Then
                mostrarArticulo(txtArticulo.Text.Trim)
            End If
        End If
    End Sub

    Private Sub btnEliminar_Click(sender As System.Object, e As System.EventArgs) Handles btnEliminar.Click
        If MsgBox("¿Está seguro de eliminar este registro?", MsgBoxStyle.Question + MsgBoxStyle.YesNo + MsgBoxStyle.DefaultButton2, "Mensajes al Usuario") = MsgBoxResult.Yes Then
            If servicio1.eliminarCodigoBarra(CIA, txtArticulo.Text.Trim, codProveedor, codBarra, apcCodigo) = True Then
                util.mensaje("Registro eliminado correctamente.")
                mostrarArticulo(txtArticulo.Text.Trim)
                Exit Sub
            Else
                util.mensaje("Ocurrió un error. Intentelo nuevamente.")
            End If
        End If
    End Sub

    Private Sub frmImpresionBarras_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        If codArticulo <> "" Then
            txtArticulo.Text = codArticulo
            mostrarArticulo(codArticulo)
        End If
    End Sub

End Class